﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FONCREAGROINTEGRAL.Models;

namespace FONCREAGROINTEGRAL.Controllers
{
    public class cuotaController : Controller
    {
        public SistIntFoncreagroEntities entidades = new SistIntFoncreagroEntities();
        string nombreMes;
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult IndexById(int id)
        {


            var query = entidades.CUOTAs
                .Where(p => p.IdPrestAdelDscto == id);
            var result = (from cuota in query.ToList()
                          join ejerciciomes in entidades.EJERCICIOMES on cuota.idejerciciomes equals ejerciciomes.idejerciciomes
                          join ejercicio in entidades.EJERCICIOs on ejerciciomes.IdEjercicio equals ejercicio.IdEjercicio
                          select new
                          {
                              IdCuouta = cuota.IdCuota,
                              Anio = ejercicio.Anio,
                              Mes = ConvertirMes(ejerciciomes.mes),
                              Monto = cuota.Monto,
                              Pagada = (cuota.pagada==true?"Si":"No")
                              
                          }).ToList();
            


            return Json(new { grid = result, total = query.Count() }, JsonRequestBehavior.AllowGet);
        }

        private string ConvertirMes(int? mes)
        {
            switch (mes)
            {
                case 1:
                    nombreMes = "Enero";
                    break;
                case 2:
                    nombreMes = "Febrero";
                    break;
                case 3:
                    nombreMes = "Marzo";
                    break;
                case 4:
                    nombreMes = "Abril";
                    break;
                case 5:
                    nombreMes = "Mayo";
                    break;
                case 6:
                    nombreMes = "Junio";
                    break;
                case 7:
                    nombreMes = "Julio";
                    break;
                case 8:
                    nombreMes = "Agosto";
                    break;
                case 9:
                    nombreMes = "Septiembre";
                    break;
                case 10:
                    nombreMes = "Octubre";
                    break;
                case 11:
                    nombreMes = "Noviembre";
                    break;
                case 12:
                    nombreMes = "Diciembre";
                    break;
            }

            return nombreMes;
        }

        [HttpPost]
        public ActionResult Manual(int id, FormCollection collection)
        {
         
            int idPrestamo = Convert.ToInt32(Request.Params["IdCuouta"]);
            int idCuota = id;
            decimal montoNuevo = Convert.ToDecimal(Request.Params["Monto"]);

            var MontoTOTALPrestamo = entidades.PRESTADELDSCTOes.Where(tt=>tt.IdPrestAdelDscto==idPrestamo)
                .Sum(tt=>tt.monto);

            var MontoAntiguoCuota = entidades.CUOTAs
                .Where(pr => pr.IdPrestAdelDscto == idPrestamo)
                .Where(pr => pr.IdCuota == idCuota)
                .Sum(pr=>pr.Monto);

            var MontoTotalCuotas = entidades.CUOTAs
                .Where(pr => pr.IdPrestAdelDscto == idPrestamo)
                .Sum(pr => pr.Monto);

            if (MontoAntiguoCuota >= montoNuevo)
            {

                try
                {
                    var query = entidades.CUOTAs.Single(p=>p.IdCuota==id);
                    TryUpdateModel(query);
                    entidades.SaveChanges();
                    return Content("OK");
                }
                catch
                {
                        return Content("ERROR");
  
                }
            }

            else {
                if ((MontoTotalCuotas - MontoAntiguoCuota) + montoNuevo > MontoTOTALPrestamo)
                {
                    return Content("MAYOR");
                }

                else { 
                var query = entidades.CUOTAs.Single(p => p.IdCuota == id);
                TryUpdateModel(query);
                entidades.SaveChanges();
                }
                return Content("OK");

            }
   
             
        }

        public ActionResult Delete(int id, FormCollection collection)
        {
            string strResponse = String.Empty;
            var ecuota = entidades.PRESTADELDSCTOes.Single(e => e.IdPrestAdelDscto == id);

            try
            {
                if (ecuota != null)
                {
                    entidades.PRESTADELDSCTOes.DeleteObject(ecuota);
                    entidades.SaveChanges();
                    return Content("OK");
                }
                return Content("Error");
            }
            catch (Exception e)
            {
                strResponse = "{success: false,msg:'" + e.Message + "'}";
                return Content(strResponse);
            }
        }
 
    }
}
